package santeclair.referentiel.gestionnaire.service.impl;

import java.math.BigDecimal;

import javax.persistence.NoResultException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import santeclair.referentiel.gestionnaire.bean.OrganismeCcam;
import santeclair.referentiel.gestionnaire.dao.OrganismeCcamDao;
import santeclair.referentiel.gestionnaire.service.ParametrageCcamService;

/**
 * @author fmokhtari
 */
@Service
public class ParametrageCcamServiceImpl implements ParametrageCcamService {

    @Autowired
    private OrganismeCcamDao organismeCcamDao;

    /** {@inheritDoc} */
    public boolean isOrganismeCcam(String codeOrganisme) {
        try {
            return organismeCcamDao.findByUniqueParameter("code", codeOrganisme) != null;
        } catch (NoResultException e) {
            return false;
        }
    }

    /** {@inheritDoc} */
    @Override
    public Integer getCoefficientOrganisme(String codeOrganisme, Integer coefficientActe) {
        try {
            OrganismeCcam organismeCcam = organismeCcamDao.findByUniqueParameter("code", codeOrganisme);
            return organismeCcam.getCoefForceAUn() ? 1 : coefficientActe;
        } catch (NoResultException e) {
            return coefficientActe;
        }
    }

    /** {@inheritDoc} */
    @Override
    public BigDecimal getPrixUnitaire(String codeOrganisme, BigDecimal prixUnitaire, BigDecimal baseRemboursement) {
        try {
            OrganismeCcam organismeCcam = organismeCcamDao.findByUniqueParameter("code", codeOrganisme);
            return organismeCcam.getRemplacementPuParBr() ? baseRemboursement : prixUnitaire;
        } catch (NoResultException e) {
            return prixUnitaire;
        }
    }
}
